home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / comms / other / dwarfx-tng / dwarfx / dwarfprot.dwarfx < prev    next >
Text File  |  1999-04-19  |  3KB  |  10 lines

  1. /* DWaRFx Prot V0.1a By David 'COolWAve' Newton
  2. \\
  3. // Usage: DWaRFPRoT.DWaRFx <env> <clock> <ctcp> <priv> <chan> <nick> <clone>
  4. \\
  5. // Trys to prevent floods!
  6. \\
  7. // This script should only be used by the DWaRFx rexx script.
  8. \\
  9. */
  10. Parse Arg envadr silence clock ctcp priv chan nick clone .;Options Results;Address Value(envadr);evnum=Substr(envadr,Pos('.',envadr));Call SetClip('DFxTIME'evnum,Time());ibg=GetClip('DFxBOTS'evnum);ibw=Words(ibg);ibg=Translate(ibg,' ','!');Do loop=1 To ibw;ibg=Delword(ibg,loop+1,1);End;dfxl="P="d2c(27)"b«DFx_PRoT» ";dfx=d2c(2)"|DWaRFx-TNG|"d2c(2);bld=d2c(2);"Echo "dfxl" "dfx" Flood Protection now running!";"GetMyNick";"Userhost "result;myh=Upper(result);"Channels";myc=result;hst=myh;num=1;Call Time(r);hst='';Do While GetClip('DFx'evnum)~='';'GetLine';lrc=line.prefix;frc=Pos('!',lrc);If frc=0|line='' Then Iterate;nrc=Left(lrc,frc-1);If Find(ibg,Upper(nrc))~=0 Then Iterate;nhc=Upper(Substr(lrc,frc+1));frc=Find(hst,nhc);If frc=1 Then Iterate;If frc=0 Then;Do;hst=hst nhc;num=num+1;frc=num;nci.frc=0;cln.frc.0="";ccp.frc=0;pcm.frc=0;End;nec=Upper(line.command) /* ;'echo p=poo2 'nc */;Select;When nec="NICK" Then;Do;nci.frc=nci.frc+1;If nci.frc>nick Then Call KICK;End;When nec="JOIN" Then;Do;cqh=Upper(line.dest);cqn=Find(cqh,cln.frc.0);If cqn=0 Then;Do;cln.frc.0=cln.frc.0 cqh;cqn=Words(cln.frc.0);cln.frc.cqn=0;cct.frc.cqn=0;pcv.frc.cqn=0;End;/* 'echo p=test 'fc'|'cln.fc.cn'|'cn'|'clone */;cln.frc.cqn=cln.frc.cqn+1;If cln.frc.cqn>clone Then Call BKICK;End;When nec="PRIVMSG"|nc="NOTICE" Then;Do;cqh=Upper(line.dest);If left(ch,1)='#' Then;Do;cqn=Find(cln.frc.0,cqh) /*;'echo p=test 'ch' 'cn' 'cln.fc.0*/;If cqn=0 Then;Do;cln.frc.0=cln.frc.0 cqh;cqn=Words(cln.frc.0);cln.frc.cqn=0;cct.frc.cqn=0;pcv.frc.cqn=0;End;If c2d(Substr(line.rest,2,1))=1 Then;Do;cct.frc.cqn=cct.frc.cqn+1;If cct.frc.cqn>ctcp Then Call CTBLOCK;End;Else;Do;pcv.frc.cqn=pcv.frc.cqn+1;If pcv.frc.cqn>chan Then Call CHBLOCK;End;End;Else;Do;If c2d(Substr(line.rest,2,1))=1 Then;Do;ccp.frc=ccp.frc+1;If ccp.frc>ctcp Then Call CTBLOCK;End;Else;Do;pcm.frc=pcm.frc+1;If pcm.frc>priv Then Call PMBLOCK;End;End;End;End;If Time(e)>clock Then;Do;Call Time(r);hst=Word(hst,1);num=1;End;End;"Echo "dfxl" "dfx" Flood Protection now stopped!";Exit;KICK:;"channels";mychans=result;Do poo=1 to Words(result);"RAW Kick "Word(mychans,poo) nrc ":NICK FLOOD DETECT - "dfx;End;"Echo "dfxl" Possible Nick flooder ("bld||nhc||bld") detected and kick attempted!";Return;BKICK:;"channels";mychans=result;Do poo=1 to Words(result);chnn=Word(mychans,poo);"RAW Mode "chnn "-o" nrc;"RAW Mode "chnn "+b *!"nhc;"RAW Kick "chnn nrc "CLONE FLOOD DETECT - "dfx;If silence=1 Then "Raw Silence +*!"nhc;End;"Echo "dfxl" Possible Clone flooder ("bld||nhc||bld") detected and ban kicked!";Return;CTBLOCK:;"Say /Ignore *!"nhc" CTCP";If silence=1 Then "Raw Silence +*!"nhc;"Echo "dfxl" Possible CTCP flooder ("bld||nhc||bld") detected and CTCP ignore set!";Return;CHBLOCK:;"Say /Ignore *!"nhc" TEXT";If silence=1 Then "Raw Silence +*!"nhc;"Echo "dfxl" Possible CHANNEL flooder ("bld||nhc||bld") detected and CHANNEL ignore set!";Return;PMBLOCK:;"Say /Ignore *!"nhc" PRIV";If silence=1 Then "Raw Silence +*!"nhc;"Echo "dfxl" Possible PRIVATE flooder ("bld||nhc||bld") detected and PRIVATE ignore set!";Return